#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
#include <QMenu>
#include <QButtonGroup>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // QPushButton
    //  图片按钮
    ui->qBtn3_2->setIcon(QIcon(":/images/1photo.jpg"));
    ui->qBtn3_2->setIconSize(QSize(50, 50));
    ui->qBtn3_2->resize(50, 50);
    connect(ui->qBtn3_2, &QPushButton::clicked, [this](){
        qDebug() << "我是图片按钮，我被点了一下！！！";
        qDebug()<< this->hobbies;
    });

    // 下拉菜单
    QMenu* m = new QMenu;
    QAction* bj = m->addAction("北京");
    m->addAction("深圳");
    m->addAction("上海");
    QMenu *sx = m->addMenu("陕西");
    sx->addAction("西安");
    sx->addAction("宝鸡");
    connect(bj, &QAction::triggered, [](){
        qDebug() << "我要去北京";
    });

    ui->qBtn4->setMenu(m);

    // 按钮可用性设置
//    ui->qBtn1->setEnabled(false);  // true可用 | false 不可用

    // 按钮不可用性设置
    ui->qBtn1->setDisabled(false);  // true不可用 | false 可用

    // 设置复选框的半选状态
    // 复选框有三个状态 0 未选中 1 半选中 2 选中状态
    // 如果需要使用复选框的半选状态，需要在一开始就设置成半选状态。
    // 如果不设置，复选框只会在 选中 和 未选中 之间切换
    ui->checkBox->setCheckState(Qt::PartiallyChecked);

    // 按钮组
    QButtonGroup* btns = new QButtonGroup;

    // 将单身和已婚两个按钮添加到按钮组
    btns->addButton(ui->radioButton_4, 0);
    btns->addButton(ui->radioButton_5, 1);

    // 连接按钮组的信号和槽
    connect(btns, SIGNAL(buttonClicked(int)), this, SLOT(response(int)));
}

void Widget::response(int index)
{
    if(index == 0)
    {
        qDebug() << "单身";
    }
    else if (index == 1)
    {
        qDebug() << "已婚";
    }
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_radioButton_clicked()
{
    this->gender =  "男";
}

void Widget::on_radioButton_2_clicked()
{
    this->gender = "女";
}

void Widget::on_radioButton_3_clicked()
{
   this->gender = "不详";
}

// stateChanged信号：当复选框中的状态发生改变时触发。
// 参数：0 未选中状态   2 未选中状态
void Widget::on_checkBox_stateChanged(int arg1)
{
    if(arg1 == 2)
    {
        this->hobbies.append("篮球");
    }
    else if (arg1 == 0)
    {
        this->hobbies.removeOne("篮球");
    }
}

void Widget::on_checkBox_2_stateChanged(int arg1)
{
    if(arg1 == 2)
    {
        this->hobbies.append("唱");
    }
    else if (arg1 == 0)
    {
        this->hobbies.removeOne("唱");
    }
}

void Widget::on_checkBox_3_stateChanged(int arg1)
{
    if(arg1 == 2)
    {
        this->hobbies.append("跳");
    }
    else if (arg1 == 0)
    {
        this->hobbies.removeOne("跳");
    }
}

void Widget::on_checkBox_4_stateChanged(int arg1)
{
    if(arg1 == 2)
    {
        this->hobbies.append("rap");
    }
    else if (arg1 == 0)
    {
        this->hobbies.removeOne("rap");
    }
}
